package com.eastshop.product.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import com.eastshop.product.dao.ProductDao;
import com.eastshop.product.vo.Product;
import com.eastshop.user.vo.User;
import com.eastshop.utils.PageBean;
/**
 * 商品管理的Service层代码
 * @author admin
 *
 */
@Transactional
public class ProductService {
	// 注入ProductDao
	private ProductDao productDao;

	public void setProductDao(ProductDao productDao) {
		this.productDao = productDao;
	}

	// Service层根据分类id查找商品
	public List<Product> findByCid(Integer cid) {
		return productDao.findByCid(cid);
	}

	// Service层根据分类id分页查询商品信息
	public PageBean<Product> findByCidWithPage(Integer cid, int page) {
		PageBean<Product> pageBean = new PageBean<Product>();
		// 设置当前页
		pageBean.setPage(page);
		// 设置每页显示的记录数
		int limit = 12;
		pageBean.setLimit(limit);
		// 设置总记录数
		int totalCount = productDao.findCountByCid(cid);
		pageBean.setTotalCount(totalCount);
		// 设置总页数
		int totalPage = 0;
		if(totalCount % limit == 0){
			totalPage = totalCount / limit;
		}else{
			totalPage = totalCount / limit + 1;
		}
		pageBean.setTotalPage(totalPage);
		// 设置每页显示的集合
		int begin = (page - 1) * limit;
		List<Product> list = productDao.findByCidWithPage(cid, begin, limit);
		pageBean.setList(list);
		return pageBean;
	}

	// Service层根据商品id查询商品
	public Product findByPid(Integer pid) {
		return productDao.findByPid(pid);
	}

	// Service层分页查询商品信息
	public PageBean<Product> findAllWithPage(int page) {
		PageBean<Product> pageBean = new PageBean<Product>();
		// 设置当前的记录数
		pageBean.setPage(page);
		// 设置每页显示的记录数
		int limit = 5;
		pageBean.setLimit(limit);
		// 设置总的记录数
		int totalCount = productDao.findCount();
		pageBean.setTotalCount(totalCount);
		// 设置总的页数
		int totalPage = 0;
		if(totalCount % limit == 0){
			totalPage = totalCount / limit;
		}else{
			totalPage = totalCount / limit + 1;
		}
		pageBean.setTotalPage(totalPage);
		// 设置每页显示的数据集合
		int begin = (page -1) * limit;
		List<Product> list = productDao.findAllWithPage(begin, limit);
		pageBean.setList(list);
		return pageBean;
	}

	// Service层删除商品的方法
	public void delete(Product product) {
		productDao.delete(product);
	}

	// Service层保存商品信息
	public void save(Product product) {
		productDao.save(product);
	}

	// Service层更新商品信息
	public void update(Product product) {
		productDao.update(product);
	}
	
}
